package br.com.zonavibe.utils;
import java.sql.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class JavaDate {

	public static final String DATA_DD_MM_YYYY = "dd/MM/yyyy";
	public static final String DATA_YYYY_MM_DD = "yyyy/MM/dd";
	public static final String DATA_YYYY_MM_DD_HH_MM_SS = "yyyy/MM/dd HH:mm:ss";
	public static final String DATA_DD_MM_YYYY_HH_MM_SS = "dd/MM/yyyy HH:mm:ss";

	public static Date formateStringToDate(String dateStr, String formato) {
		Date dateRetorno = null;

		if (!dateStr.equals("") && !dateStr.equals(null)) {
			try {
				Calendar calendar = Calendar.getInstance();
				
				int dia = 0; 
				int mes = 0;	
				int ano = 0;
				
				if (formato.equals(DATA_DD_MM_YYYY)) {
					String[] arrayStringData = dateStr.split("/");

					dia = Integer.parseInt(arrayStringData[0]);	
					mes = Integer.parseInt(arrayStringData[1]);	
					ano = Integer.parseInt(arrayStringData[2].substring(0, 4));
					
					calendar.set(ano, mes, dia);
					
					java.util.Date date = calendar.getTime();
					
					dateRetorno = new Date(date.getTime());
					
				}

				else if (formato.equals(DATA_YYYY_MM_DD)) {
					String[] arrayStringData = dateStr.split("/");

					dia = Integer.parseInt(arrayStringData[0]);	
					mes = Integer.parseInt(arrayStringData[1]);	
					ano = Integer.parseInt(arrayStringData[2].substring(0, 4));
					
					calendar.set(ano, mes, dia);
					
					java.util.Date date = calendar.getTime();
					
					dateRetorno = new Date(date.getTime());
				}

				else if (formato.equals(DATA_DD_MM_YYYY_HH_MM_SS)) {
					String[] arrayStringData = dateStr.split("/");

					dia = Integer.parseInt(arrayStringData[0]);	
					mes = Integer.parseInt(arrayStringData[1]);	
					ano = Integer.parseInt(arrayStringData[2].substring(0, 4));
					
					String[] auxArray = arrayStringData[2].split(":");
					int hora = Integer.parseInt(auxArray[0].substring(5));
					int minuto = Integer.parseInt(auxArray[1]);
					int segundo = Integer.parseInt(auxArray[2]);
					
					
					calendar.set(ano, mes, dia, hora, minuto, segundo);
					
					java.util.Date date = calendar.getTime();
					
					dateRetorno = new Date(date.getTime());
				}

				else if (formato.equals(DATA_YYYY_MM_DD_HH_MM_SS)) {
					String[] arrayStringData = dateStr.split("/");

					dia = Integer.parseInt(arrayStringData[0]);	
					mes = Integer.parseInt(arrayStringData[1]);	
					ano = Integer.parseInt(arrayStringData[2].substring(0, 4));
					
					String[] auxArray = arrayStringData[2].split(":");
					int hora = Integer.parseInt(auxArray[0].substring(5));
					int minuto = Integer.parseInt(auxArray[1]);
					int segundo = Integer.parseInt(auxArray[2]);
					
					
					calendar.set(ano, mes, dia, hora, minuto, segundo);
					
					java.util.Date date = calendar.getTime();
					
					dateRetorno = new Date(date.getTime());
				}

			} catch (Exception e) {
				e.printStackTrace();
				System.out.println("Erro ao converter String em Data");
			}
		}

		return dateRetorno;
	}

	public static String formateDateToString(Date data, String formato) {
		String dateRetorno = null;

		if (!data.equals(null)) {
			DateFormat df = new SimpleDateFormat(formato);
			dateRetorno = df.format(data);
		}

		return dateRetorno;
	}

}
